﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Collections.Generic;
using System.IO;
using BUS;
using DTO;
using System.Text;
using System.Net.Configuration;
using System.Net;
using System.Net.Mail;

namespace Cucre
{
    public partial class WebForm16 : System.Web.UI.Page
    {
        private DataClasses1DataContext Data = new DataClasses1DataContext();
        bool isSearch = false;
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            string path = Server.MapPath("theme.txt");
            StreamReader SR = new StreamReader(path);
            string nameTheme = SR.ReadLine();
            SR.Close();
            base.OnPreInit(e);
            if (Session["MyTheme"] == null)
            {
                Session.Add("MyTheme", nameTheme);
                Page.Theme = (string)Session["MyTheme"];
            }
            else
            {
                Page.Theme = (string)Session["MyTheme"];
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DoanhNghiepDataBind();
            }
        }

        public void DoanhNghiepDataBind()
        {
            if (!isSearch)
            {
                var query = from provider in Data.PROVIDERs
                            where provider.ACCOUNT.VISIBLE == true
                            select new
                            {
                                IDPROVIDER = provider.IDPROVIDER,
                                COMPANY_NAME = provider.COMPANY_NAME,
                                EMAIL = provider.ACCOUNT.EMAIL,
                                PHONE = provider.ACCOUNT.PHONE_NUMBER,
                                ADDRESS = provider.ACCOUNT.ADDRESS
                            };
                DSDoanhNghiep_GridView.DataSource = query;
            }
            else
            {
                string stringSearch = ChuanHoaChuoi(txtSearchDoanhNghiep.Text.Trim());
                var query = from provider in Data.PROVIDERs
                            where ( (provider.ACCOUNT.VISIBLE == true)&&(provider.COMPANY_NAME.ToLower().Contains(stringSearch)))
                            select new
                            {
                                IDPROVIDER = provider.IDPROVIDER,
                                COMPANY_NAME = provider.COMPANY_NAME,
                                EMAIL = provider.ACCOUNT.EMAIL,
                                PHONE = provider.ACCOUNT.PHONE_NUMBER,
                                ADDRESS = provider.ACCOUNT.ADDRESS
                            };
                DSDoanhNghiep_GridView.DataSource = query;
            }
            
            
            DSDoanhNghiep_GridView.DataBind();
        }
        private static string ChuanHoaChuoi(string stringSearch)
        {
            for (int i = 0; i < stringSearch.Length - 1; ++i)
            {
                if ((stringSearch[i].CompareTo(' ') == 0) && (stringSearch[i + 1].CompareTo(' ') == 0))
                {
                    stringSearch.Remove(i, 1);
                    --i;
                }
            }
            return stringSearch.ToLower();
        }
        protected void DSDoanhNghiep_GridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            DSDoanhNghiep_GridView.SelectedIndex = e.NewSelectedIndex;
            int idProvider=int.Parse(DSDoanhNghiep_GridView.Rows[e.NewSelectedIndex].Cells[1].Text);
            PROVIDER Provider = ProviderBUS.GetProvider(idProvider);
            Company_Name_tb.Text = Provider.COMPANY_NAME;
            UserLogin_tb.Text = Provider.ACCOUNT.USERNAME;
            Email_tb.Text = Provider.ACCOUNT.EMAIL;
            NumberPhone_tb.Text = Provider.ACCOUNT.PHONE_NUMBER;
            Adress_tb.Text = Provider.ACCOUNT.ADDRESS;
            Introduce_tb.Text = Provider.INTRODUCE_COMPANY;
        }

        protected void DSDoanhNghiep_GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            DSDoanhNghiep_GridView.PageIndex = e.NewPageIndex;
            DoanhNghiepDataBind();
        }

        protected void DSDoanhNghiep_GridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                int idProvider = int.Parse(DSDoanhNghiep_GridView.Rows[e.RowIndex].Cells[1].Text);
                bool Result=ProviderBUS.Delete(idProvider);
                if (Result)
                {
                    DoanhNghiepDataBind();
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thành Công')", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                }
            }
            catch (Exception ex)
            {
                string message = "alert('" + ex.Message + "')";
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", message, true);
            }
        }

        protected void ThemMoi_bt_Click(object sender, EventArgs e)
        {
            try
            {
                if (Adress_tb.Text.Trim() == "" || Email_tb.Text.Trim() == "" || NumberPhone_tb.Text.Trim() == "" || UserLogin_tb.Text.Trim() == ""
                    || Company_Name_tb.Text.Trim() == "" || Introduce_tb.Text.Trim() == "")
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Bạn Chưa Nhập Đầy Đủ Thông Tin Vào. Vui Lòng Kiểm Tra Lại !!!!!!')", true);
                    return;
                }
                if (Email_tb.Text.Contains('.') == false || Email_tb.Text.Contains('@') == false)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Email Không Hợp Lệ.Vui Lòng Kiểm Tra Lại')", true);
                    return;
                }
                if (AccountBUS.CheckIsExisting(UserLogin_tb.Text.Trim()))
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Username đã tồn tại.Vui Lòng Kiểm Tra Lại')", true);
                    return;
                }
                PROVIDER Provider = new PROVIDER();
                Provider.ACCOUNT = new ACCOUNT();
                Provider.ACCOUNT.ADDRESS = Adress_tb.Text.Trim();
                Provider.ACCOUNT.EMAIL = Email_tb.Text.Trim();
                Provider.ACCOUNT.PHONE_NUMBER = NumberPhone_tb.Text.Trim();
                Provider.ACCOUNT.USERNAME = UserLogin_tb.Text.Trim();
                string pass = "";
                Random random = new Random();
                for (int i = 0; i < 6; ++i)
                {
                    pass += random.Next(0, 9).ToString();
                }
                Provider.ACCOUNT.PASSWORD = pass;
                Provider.ACCOUNT.VISIBLE = true;
                Provider.COMPANY_NAME = Company_Name_tb.Text.Trim();
                Provider.INTRODUCE_COMPANY = Introduce_tb.Text.Trim();
                bool Result = ProviderBUS.Insert(Provider);
                if (Result)
                {
                    DoanhNghiepDataBind();
                    MailMessage msg = new MailMessage();
                    msg.IsBodyHtml = true;
                    msg.From = new MailAddress("muare@yahoo.com", "Admin muare.vn");
                    msg.To.Add(new MailAddress(Email_tb.Text.Trim()));
                    msg.Subject = "Mật Khẩu Đăng Nhập Vào Muare.vn";
                    msg.Body = "hi bạn .bạn đã đăng kí thành viên thành công với trang Muare của chúng tôi với tên đăng nhập là:" + UserLogin_tb.Text.Trim() + " Mật khẩu của bạn là: " + pass;
                    // Send the message
                    SmtpClient client = new SmtpClient("smtp.mail.yahoo.com.vn", 25);
                    client.Credentials = new NetworkCredential("muare", "admin08");
                    client.EnableSsl = false;
                    client.Send(msg);

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thành Công. Hệ Thống Sẽ Gửi Password Đăng Nhập về Email Bạn đã đăng kí')", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                }
            }
            catch (Exception ex)
            {
                string message = "alert('" + ex.Message + "')";
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", message, true);
            }
        }

        protected void CapNhat_bt_Click(object sender, EventArgs e)
        {
            try
            {
                if (DSDoanhNghiep_GridView.SelectedIndex >= 0)
                {
                    int id = int.Parse(DSDoanhNghiep_GridView.Rows[DSDoanhNghiep_GridView.SelectedIndex].Cells[1].Text);
                    PROVIDER Provider = ProviderBUS.GetProvider(id);
                    if (Provider == null)
                        return;
                    if (Company_Name_tb.Text.Trim() != "")
                        Provider.COMPANY_NAME = Company_Name_tb.Text.Trim();
                    if (NumberPhone_tb.Text.Trim() != "")
                        Provider.ACCOUNT.PHONE_NUMBER = NumberPhone_tb.Text.Trim();
                    if (Adress_tb.Text.Trim() != "")
                        Provider.ACCOUNT.ADDRESS = Adress_tb.Text.Trim();
                    if (Introduce_tb.Text.Trim() != "")
                        Provider.INTRODUCE_COMPANY = Introduce_tb.Text.Trim();
                    bool Result = ProviderBUS.Update(Provider);
                   
                    if (Result)
                    {
                        DoanhNghiepDataBind();
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Cập Nhật Thành Công')", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                    }
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('bạn chưa chọn thành viên để cập nhật')", true);
                }
            }
            catch (Exception ex)
            {
                string message = "alert('" + ex.Message + "')";
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", message, true);
            }
        }

        protected void Xoa_bt_Click(object sender, EventArgs e)
        {
            try
            {
                if (DSDoanhNghiep_GridView.SelectedIndex >= 0)
                {
                    int id = int.Parse(DSDoanhNghiep_GridView.Rows[DSDoanhNghiep_GridView.SelectedIndex].Cells[1].Text);
                    bool Result = ProviderBUS.Delete(id);
                    if (Result)
                    {
                        DoanhNghiepDataBind();
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thành Công')", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('Qúa Trình Thực Hiện Thất Bại. Vui Lòng Kiểm Tra Lại và Thử Lại Lần Nửa')", true);
                    }
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", "alert('bạn chưa chọn thành viên để xóa')", true);
                }
            }
            catch (Exception ex)
            {
                string message = "alert('" + ex.Message + "')";
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientScript", message, true);
            }
        }

        protected void btSearchDoanhNghiep_Click(object sender, EventArgs e)
        {
            if (txtSearchDoanhNghiep.Text.Trim() == "")
                return;
            isSearch = true;
            DoanhNghiepDataBind();
        }

        protected void ShowAll_Click(object sender, EventArgs e)
        {
            isSearch = false;
            DoanhNghiepDataBind();
        }
    }
}
